package br.com.sistemaGabinete.util;


import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

@ManagedBean(name="utilitario")
@ViewScoped
public class Utilitario {
	
	/**
	 * Responsável por verificar se objeto informado está nulo ou não.
	 * 
	 * @autor Josivam.Rodrigues
	 * @since 29/06/2014
	 * @version 1.0
	 * @param objeto
	 * @return TRUE se objeto for nulo, FALSE se não for nulo.
	 */
	public boolean seObjetoNullo(Object objeto){
		boolean retorno = Boolean.FALSE;
		if(objeto == null){
			retorno = Boolean.TRUE;
		}
		return retorno;
	}
	
	
	/**
	 * Responsável por obter o nome do dia de hoje.
	 * 
	 * @autor Josivam.Rodrigues
	 * @since 28/06/2014
	 * @version 1.0
	 * @return numero do dia da semana. exemplo: Segunda-Feira.
	 */
	public String obterNomeDiaHoje(Date data) {
		String retorno = "";

		// / if (utilitario.seObjetoNullo(data)) {
		Calendar c = new GregorianCalendar();
		c.setTime(data);
		int diaSemana = c.get(Calendar.DAY_OF_WEEK);

	//	retorno = .obterDiaDaSemana(diaSemana);
		// }
		return retorno;
	}
	
	

	/**
	 * Responsável por obter o nome do Dia da semana.
	 * 
	 * @autor Josivam.Rodrigues
	 * @since 14/06/2014
	 * @version 1.0
	 * @param dia
	 * @return Caso o dia informado seja valido, o metodo retorna o nome do dia
	 *         da semana.
	 */
	public String obterDiaDaSemana(int dia) {
		String diaSemana = "";
		switch (dia) {
		case Calendar.SUNDAY:
			diaSemana = "Domingo";
			break;
		case Calendar.MONDAY:
			diaSemana = "Segunda-Feira";
			break;
		case Calendar.TUESDAY:
			diaSemana = "Terça-Feira";
			break;
		case Calendar.WEDNESDAY:
			diaSemana = "Quarta-Feira";
			break;
		case Calendar.THURSDAY:
			diaSemana = "Quinta-Feira";
			break;
		case Calendar.FRIDAY:
			diaSemana = "Sexta-Feira";
			break;
		case Calendar.SATURDAY:
			diaSemana = "Sábado";
			break;
		}
		return diaSemana;
	}

	/**
	 * Responsável por obter o numero do dia da semana.
	 * 
	 * @autor Josivam.Rodrigues
	 * @since 28/06/2014
	 * @version 1.0
	 * @return numero do dia da semana. por exemplo:28.
	 */
	public Integer obterNumeroDiaSemana() {
		Date d = new Date();
		Calendar c = new GregorianCalendar();
		c.setTime(d);
		return c.get(Calendar.DAY_OF_MONTH);
	}

	/**
	 * Método responsável por retorna a data de Hoje. <br/>
	 * No Formato: 01/01/2014
	 * 
	 * @autor Josivam.Rodrigues
	 * @since 28/06/2014
	 * @version 1.0
	 * @return {@link String dataHoje}
	 */
	public Date obterDataHoje() {
		Calendar c2 = Calendar.getInstance();
		return c2.getTime();
	}

	public String obterDataFormatada(Date data) {
		String retorno = "";
		// if (utilitario.seObjetoNullo(data)) {
		SimpleDateFormat dataFormatada = new SimpleDateFormat("dd/MM/yyyy");
		retorno = dataFormatada.format(data);
		// }
		return retorno;
	}

	// --------------------------------------------------------------------------------------------------------------------

	/**
	 * Método responsável por retorna a data de Hoje. <br/>
	 * No Formato: Sexta-feira, 8 de Novembro de 2013 23:36:57
	 * 
	 * @return {@link String dataHoje}
	 */
	public String buscarDataHoraDeHoje() {
		Calendar cal = Calendar.getInstance();
		DateFormat df = DateFormat.getDateTimeInstance(DateFormat.FULL,
				DateFormat.MEDIUM);
		return df.format(cal.getTime());
	}

	/**
	 * Método responsável em gerar uma nova senha
	 * 
	 * @return {@link String senha}
	 */
	public String gerarNovaSenha() {
		String senha = "";

		String[] carct = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
				"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l",
				"m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x",
				"y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
				"K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V",
				"W", "X", "Y", "Z" };

		for (int x = 0; x < 10; x++) {
			int j = (int) (Math.random() * carct.length);
			senha += carct[j];
		}
		return senha;
	}

	
}
